package com.aaa.reflect;

import java.lang.reflect.Method;

/**
 * @author ：Teacher陈（86521760@qq.com）
 * @date ：Created in 2022/8/18 9:51
 * @description：
 * @modified By：
 * @version:
 */
public class MethodTest {
    public static void main(String[] args) throws Exception {
      /*  Class<Person> clazz = Person.class;
        //获取所有的,包含父类的方法
        Method[] methods = clazz.getMethods();
        for (Method method : methods) {
            System.out.println(method);
        }
        System.out.println("===================");
        //获取本类的所有方法
        Method[] methods1 = clazz.getDeclaredMethods();
        for (Method method : methods1) {
            System.out.println(method);
        }*/
      //原始方式调用方法
     /* Person  person= new Person();
      person.setName("chenjian");
      person.introduce2();*/
        //反射的方式调用方法
        Class<Person> clazz = Person.class;
        /*Method introduce2 = clazz.getMethod("introduce2");
        Person  person= new Person();
        person.setName("chenjian");
        introduce2.invoke(person);*/
        //add是方法名，int.class是方法的第一个参数类型，
        Method add = clazz.getMethod("add2", int.class, int.class);
        Person person= new Person();
        Object invoke = add.invoke(person, 200, 50);
        System.out.println(invoke);
    }
}
